In [1]:
import plotly.offline as pyo

from plotly.graph_objs import *

import chart_studio.plotly as py

import pandas as pd
from pandas import DataFrame
In [2]:
pip install pandas_datareader==0.9.0
Requirement already satisfied: pandas_datareader==0.9.0 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (0.9.0)
Requirement already satisfied: lxml in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from pandas_datareader==0.9.0) (4.6.3)
Requirement already satisfied: requests>=2.19.0 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from pandas_datareader==0.9.0) (2.26.0)
Requirement already satisfied: pandas>=0.23 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from pandas_datareader==0.9.0) (1.3.4)
Requirement already satisfied: python-dateutil>=2.7.3 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from pandas>=0.23->pandas_datareader==0.9.0) (2.8.2)
Requirement already satisfied: pytz>=2017.3 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from pandas>=0.23->pandas_datareader==0.9.0) (2021.3)
Requirement already satisfied: numpy>=1.17.3 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from pandas>=0.23->pandas_datareader==0.9.0) (1.20.3)
Requirement already satisfied: six>=1.5 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from python-dateutil>=2.7.3->pandas>=0.23->pandas_datareader==0.9.0) (1.16.0)
Requirement already satisfied: certifi>=2017.4.17 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from requests>=2.19.0->pandas_datareader==0.9.0) (2021.10.8)
Requirement already satisfied: charset-normalizer~=2.0.0 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from requests>=2.19.0->pandas_datareader==0.9.0) (2.0.4)
Requirement already satisfied: idna<4,>=2.5 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from requests>=2.19.0->pandas_datareader==0.9.0) (3.2)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from requests>=2.19.0->pandas_datareader==0.9.0) (1.26.7)
Note: you may need to restart the kernel to use updated packages.
In [3]:
from pandas_datareader import data
from scipy import signal
In [4]:
pyo.offline.init_notebook_mode()
In [6]:
pip install yfinance
Collecting yfinance
  Downloading yfinance-0.2.20-py2.py3-none-any.whl (62 kB)
     |████████████████████████████████| 62 kB 1.4 MB/s eta 0:00:011
Collecting pytz>=2022.5
  Downloading pytz-2023.3-py2.py3-none-any.whl (502 kB)
     |████████████████████████████████| 502 kB 9.6 MB/s eta 0:00:01
Requirement already satisfied: html5lib>=1.1 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from yfinance) (1.1)
Requirement already satisfied: requests>=2.26 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from yfinance) (2.26.0)
Collecting multitasking>=0.0.7
  Downloading multitasking-0.0.11-py3-none-any.whl (8.5 kB)
Requirement already satisfied: pandas>=1.3.0 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from yfinance) (1.3.4)
Requirement already satisfied: cryptography>=3.3.2 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from yfinance) (3.4.8)
Collecting lxml>=4.9.1
  Downloading lxml-4.9.2-cp39-cp39-macosx_10_15_x86_64.whl (4.8 MB)
     |████████████████████████████████| 4.8 MB 18.1 MB/s eta 0:00:01     |███████████████████████████▉    | 4.2 MB 18.1 MB/s eta 0:00:01
Collecting beautifulsoup4>=4.11.1
  Downloading beautifulsoup4-4.12.2-py3-none-any.whl (142 kB)
     |████████████████████████████████| 142 kB 22.5 MB/s eta 0:00:01
Requirement already satisfied: appdirs>=1.4.4 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from yfinance) (1.4.4)
Collecting frozendict>=2.3.4
  Downloading frozendict-2.3.8-cp39-cp39-macosx_10_9_x86_64.whl (36 kB)
Requirement already satisfied: numpy>=1.16.5 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from yfinance) (1.20.3)
Requirement already satisfied: soupsieve>1.2 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from beautifulsoup4>=4.11.1->yfinance) (2.2.1)
Requirement already satisfied: cffi>=1.12 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from cryptography>=3.3.2->yfinance) (1.14.6)
Requirement already satisfied: pycparser in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from cffi>=1.12->cryptography>=3.3.2->yfinance) (2.20)
Requirement already satisfied: six>=1.9 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from html5lib>=1.1->yfinance) (1.16.0)
Requirement already satisfied: webencodings in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from html5lib>=1.1->yfinance) (0.5.1)
Requirement already satisfied: python-dateutil>=2.7.3 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from pandas>=1.3.0->yfinance) (2.8.2)
Requirement already satisfied: idna<4,>=2.5 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from requests>=2.26->yfinance) (3.2)
Requirement already satisfied: certifi>=2017.4.17 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from requests>=2.26->yfinance) (2021.10.8)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from requests>=2.26->yfinance) (1.26.7)
Requirement already satisfied: charset-normalizer~=2.0.0 in /Users/josh/opt/anaconda3/lib/python3.9/site-packages (from requests>=2.26->yfinance) (2.0.4)
Installing collected packages: pytz, multitasking, lxml, frozendict, beautifulsoup4, yfinance
  Attempting uninstall: pytz
    Found existing installation: pytz 2021.3
    Uninstalling pytz-2021.3:
      Successfully uninstalled pytz-2021.3
  Attempting uninstall: lxml
    Found existing installation: lxml 4.6.3
    Uninstalling lxml-4.6.3:
      Successfully uninstalled lxml-4.6.3
  Attempting uninstall: beautifulsoup4
    Found existing installation: beautifulsoup4 4.10.0
    Uninstalling beautifulsoup4-4.10.0:
      Successfully uninstalled beautifulsoup4-4.10.0
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
conda-repo-cli 1.0.4 requires pathlib, which is not installed.
Successfully installed beautifulsoup4-4.12.2 frozendict-2.3.8 lxml-4.9.2 multitasking-0.0.11 pytz-2023.3 yfinance-0.2.20
Note: you may need to restart the kernel to use updated packages.
In [7]:
import yfinance as yf
yf.pdr_override()
In [10]:
appleVals = data.get_data_yahoo('AAPL','2012-01-01','2013-01-01')
appleVals.head()
[*********************100%***********************]  1 of 1 completed
Out[10]:
Open High Low Close Adj Close Volume
Date
2012-01-03 14.621429 14.732143 14.607143 14.686786 12.482926 302220800
2012-01-04 14.642857 14.810000 14.617143 14.765714 12.550013 260022000
2012-01-05 14.819643 14.948214 14.738214 14.929643 12.689342 271269600
2012-01-06 14.991786 15.098214 14.972143 15.085714 12.821995 318292800
2012-01-09 15.196429 15.276786 15.048214 15.061786 12.801657 394024400
In [14]:
unSmoothApple = {'type' : 'scatter',
               'x' : appleVals.index,
               'y' : appleVals['Close']+50,
              'mode' : 'lines',
               'line' : {'smoothing' : 0,
                        'shape' : 'spline'},
                'name' : 'Apple (UnSmooth)'}

smoothApple = {'type' : 'scatter',
               'x' : appleVals.index,
               'y' : appleVals['Close'],
              'mode' : 'lines',
               'line' : {'smoothing' : 1.3,
                        'shape' : 'spline'},
              'name' : 'Apple (Smooth)'}

layout = {'title' : 'Stock Closing Prices for Apple in 2012',
         'xaxis' : {'title' : 'Date'},
         'yaxis' : {'title' : 'Closing Price ($)'}}

data = Data([unSmoothApple, smoothApple])

fig = Figure(data=data, layout=layout)

pyo.iplot(fig)
In [15]:
smoothApple.update({'y' : signal.savgol_filter(appleVals['Close'], 51, 3),})
unSmoothApple.update({'y' : appleVals['Close']})

data = Data([smoothApple, unSmoothApple])

fig = Figure(data=data, layout=layout)

pyo.iplot(fig)
In [ ]: